/**
 * 获取cookie
 * @param cookie_name
 * @returns {string}
 */
function getCookie(cookie_name) {
    var allcookies = document.cookie;
    var cookie_pos = allcookies.indexOf(cookie_name);
    if (cookie_pos != -1) {
        cookie_pos = cookie_pos + cookie_name.length + 1;
        var cookie_end = allcookies.indexOf(";", cookie_pos);
        if (cookie_end == -1) {
            cookie_end = allcookies.length;
        }
        var value = unescape(allcookies.substring(cookie_pos, cookie_end));
    }
    return value;
}

/***
 * 判断cookie是否开启
 * @returns {boolean}
 */
function cookieEnable(){
    var result=false;
    if(navigator.cookiesEnabled)  return true;
    document.cookie = "testcookie=yes;";
    var cookieSet = document.cookie;
    if (cookieSet.indexOf("testcookie=yes") > -1)  result=true;
    document.cookie = "";
    return result;
}

/**
 * 判断变量是否为空，
 * @param param
 * @returns {boolean}
 */
function isEmpty(param){
    if(param){
        var param_type = typeof(param);
        if(param_type == 'object'){
            //要判断的是【对象】或【数组】或【null】等
            if(typeof(param.length) == 'undefined'){
                if(JSON.stringify(param) == "{}"){
                    return true;//空值，空对象
                }
            }else if(param.length == 0){
                return true;//空值，空数组
            }
        }else if(param_type == 'string'){
            //如果要过滤空格等字符
            var new_param = param.trim();
            if(new_param.length == 0){
                //空值，例如:带有空格的字符串" "。
                return true;
            }
        }else if(param_type == 'boolean'){
            if(!param){
                return true;
            }
        }else if(param_type== 'number'){
            if(!param){
                return true;
            }
        }
        return false;//非空值
    }else{
        //空值,例如：
        //(1)null
        //(2)可能使用了js的内置的名称，例如：var name=[],这个打印类型是字符串类型。
        //(3)空字符串''、""。
        //(4)数字0、00等，如果可以只输入0，则需要另外判断。
        return true;
    }
}

/***
 * 窗口打印
 * @param text
 */
function $$(text){
    try {
        console.dir(text);
    } catch (e) {}
}

/**
 * icon 1正确 2错误 3问号 4锁 5哭脸 6笑脸 7警告
 * @param msg
 */
function alertSuccess(msg){
    layer.msg(msg, {icon:1});
}
function alertError(msg){
    layer.msg(msg, {icon:2});
}
function alertByIcon(msg,icon){
    layer.msg(msg, {icon: icon});
}

/**
 * 对Date的扩展，将 Date 转化为指定格式的String
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
 * 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * eg:
 * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
 * (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
 * (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
 * (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
 * (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
 */
Date.prototype.getStringDate = function(fmt){
    var o = {
        "M+" : this.getMonth()+1, //月份
        "d+" : this.getDate(), //日
        "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时
        "H+" : this.getHours(), //小时
        "m+" : this.getMinutes(), //分
        "s+" : this.getSeconds(), //秒
        "q+" : Math.floor((this.getMonth()+3)/3), //季度
        "S" : this.getMilliseconds() //毫秒
    };
    var week = {
        "0" : "/u65e5",
        "1" : "/u4e00",
        "2" : "/u4e8c",
        "3" : "/u4e09",
        "4" : "/u56db",
        "5" : "/u4e94",
        "6" : "/u516d"
    };
    if(/(y+)/.test(fmt)){
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }
    if(/(E+)/.test(fmt)){
        fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "/u661f/u671f" : "/u5468") : "")+week[this.getDay()+""]);
    }
    for(var k in o){
        if(new RegExp("("+ k +")").test(fmt)){
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        }
    }
    return fmt;
};

/**
 * ajax文件下载
 *
 * @param url 请求地址
 * @param fileName 文件名称
 * @param param 参数对象，会转换为JSON
 */
function download(url,fileName,param) {
    // 创建XMLHttpRequest对象
    var xhr = new XMLHttpRequest();
    xhr.open('POST', url, true);
    // 设置发送数据的数据格式
    xhr.setRequestHeader('content-type', 'application/json');
    // 设置响应数据格式
    xhr.responseType = "blob";
    // 定义请求完成的处理参数
    xhr.onload = function () {
        if (this.status === 200) {
            // 返回200
            var blob = this.response;
            var reader = new FileReader();
            // 转换为base64，可以直接放入a --> href
            reader.readAsDataURL(blob);
            reader.onload = function (e) {
                // 转换完成，创建一个a标签用于下载
                var a = document.createElement('a');
                a.style.display = 'none';
                a.download = fileName;
                a.href = e.target.result;
                $("body").append(a);
                a.click();
                $(a).remove();
            }
        } else {
            layer.msg('有点忧伤,代码生成失败', {icon: 5});
        }
    };
    // 发送请求
    xhr.send(JSON.stringify(param));
};


/**
 * 截取请求参数
 * @param name
 * @returns {string|null}
 */
function getUrlParam(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    } else {
        return null;
    }
};

/**a
 * 根据id获取表单数据
 * @param formId
 * @returns {{}}
 */
function getFormData(formId) {
    var formData = {};
    var data = $('#' + formId).serializeArray();
    $.each(data, function() {
        formData[this.name] = this.value;
    });
    return formData;
};

/**
 * 汉字转拼音赋值
 * @param id 当前对象
 * @param fzId 赋值对象ID
 * @constructor
 */
function PYMethod(id,fzId){
    if (isEmpty(id) || isEmpty(fzId))return ;
    var dictName = $("#"+id).val();
    $("#"+fzId).val(layui.pinyin.makePy(dictName));
}